package coba.excel.export.solicitud;

import java.util.List;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;

import coba.model.Contacto;
import coba.model.Guia;
import coba.model.Institucion;
import coba.model.Itinerario;
import coba.model.Solicitud;
import coba.model.SolicitudGuia;
import coba.service.ContactoLocalServiceUtil;
import coba.service.GuiaLocalServiceUtil;
import coba.service.InstitucionLocalServiceUtil;
import coba.service.ItinerarioLocalServiceUtil;
import coba.service.SolicitudGuiaLocalServiceUtil;
import coba.service.SolicitudLocalServiceUtil;
import coba.util.GetSolicitudNumero;
import coba.util.SolicitudId;

public class DumpSolicitudesIntoSheet {

	public static void dump(Sheet sheet, List<SolicitudId> listSolicitudId)
			throws PortalException, SystemException {

		Row row = sheet.createRow(0);
		row.createCell(0).setCellValue("Codigo");
		row.createCell(1).setCellValue("Guias");
		row.createCell(2).setCellValue("Institucion");
		row.createCell(3).setCellValue("Itinerario");
		row.createCell(4).setCellValue("Fecha de visita");

		CreationHelper creationHelper = sheet.getWorkbook().getCreationHelper();
		short dateFormat = creationHelper.createDataFormat().getFormat("dd/MM/yyyy");
		
		CellStyle cellStyle = sheet.getWorkbook().createCellStyle();
		cellStyle.setDataFormat(dateFormat);

		int i = 1;
		for (SolicitudId it : listSolicitudId) {
			Solicitud solicitud = SolicitudLocalServiceUtil.getSolicitud(it.getId());
			Itinerario itinerario = null;
			if (solicitud.getItinerarioId() != 0L)
				itinerario = ItinerarioLocalServiceUtil.getItinerario(solicitud.getItinerarioId());
			Contacto contacto = ContactoLocalServiceUtil.getContacto(solicitud.getContactoId());
			Institucion institucion = InstitucionLocalServiceUtil.getInstitucion(contacto.getInstitucionId());
			List<SolicitudGuia> listSolicitudGuia = SolicitudGuiaLocalServiceUtil.findBySolicitudId(solicitud.getId());

			row = sheet.createRow(i ++);
			row.createCell(0).setCellValue(GetSolicitudNumero.get(solicitud, itinerario, institucion));

			StringBuilder sb = new StringBuilder();
			int j = 0;
			for (SolicitudGuia it1 : listSolicitudGuia) {
				if (j++ > 0)
					sb.append(" - ");
				Guia guia = GuiaLocalServiceUtil.getGuia(it1.getGuiaId());
				sb.append(guia.getApellido() + ", " + guia.getNombre());
			}

			row.createCell(1).setCellValue(sb.toString());
			row.createCell(2).setCellValue(institucion.getNombre() + " (" + institucion.getLocalidad() + ")");
			
			if (itinerario != null)
				row.createCell(3).setCellValue(itinerario.getNombre());

			if (solicitud.getFechaItinerario() != null) {
				Cell cell = row.createCell(4);
				cell.setCellStyle(cellStyle);
				cell.setCellValue(solicitud.getFechaItinerario());
			}

			sheet.autoSizeColumn(0);
			sheet.autoSizeColumn(1);
			sheet.autoSizeColumn(2);
			sheet.autoSizeColumn(3);
			sheet.autoSizeColumn(4);
			//Cell cellToRemove = row.getCell(5);
			//row.removeCell(cellToRemove);
		}

	}

}
